\subsection{VoDBT}

VoDBT fra \cite{qosvod} er en BitTorrent hjulpet metode til Video-on-Demand
systemer. Vi vil i dette afsnit gennemgå i detalje hvordan artiklen beskriver metoden, samt hvordan
vi implementer den i ChickenSoup systemet. Metoden benytter sig af flere vinduer
til at bestemme hvilke pieces der skal hentes og hvornår.

\begin{description}
\item[In-Order Window] Dette vindue starter fra starten af filen og requester
  alle pieces i kronologisk orden. Dette sikre at klienten kan begynde playback
  på et kontinuert og ukorrupteret stykke data.
  Størrelsen af vinduet besluttes af formlen \[w_1 = d\cdot \frac{r}{s} \] hvor
  $d$ er playback delay, $r$ er videoens playback rate og $s$ er piece
  størrelsen. I ChickenSoup systemet er der over vinduet implementeret et
  Just-In-Time download system, hvor en piece som ikke er blevet hentet, på
  trods af at have være anmodet af en peer, bliver hentet fra en server lige
  inden vinduet opdateres.
\item[Rarest-First Window] For at sikre at der ikke går tid som klienten ikke
  benytter på at hente data har vi et andet vindue som er i forlængelse af
  In-Order vinduet. Dette vindue benyttes kun såfremt alle pieces er hentet i
  In-Order vinduet og der stadig er tid tilbage inden næste vindue opdaterings
  interval. Alle pieces bliver prioriteret efter sjældenhed, og klienten henter
  hele tiden den mest sjældne piece. Størrelsen af vinduet er ikke specifikt
  defineret i artiklen og ChickenSoup benytter sig derfor af en konstant
  størrelse.
  ChickenSoup implementere dog ikke rarest-first i dette vindue da det
  underliggende framework ikke giver mulighed for det. Istedet benyttes en
  randomiseret algoritme.
\end{description}

\insertfigure{vodbt-windows.png}{Eksempel på VoDBT's vindue strategi. Lånt fra
\cite{Liu2009}}{fig:vodbt}

Opdatering og fremrykning af vinduerne sker hvert 60. sekund. Efter dette
interval rykkes In-Order vinduet frem til den første piece efter sit tidligere
vindues slutning og begynder igen at hente pieces kronologisk som vidst på
figur~\ref{fig:vodbt}. Rarest-First vinduet holdes også opdateret løbende, hvis
dens første piece bliver hentet rykker den sig selv frem indtil dens første piece igen er uhentet.
Derudover bliver den rykket til forlængelse af In-Order vinduet når dette bliver
opdateret. Vinduerne deler altså aldrig nogle pieces og Rarest-First vinduet har
mulighed for at rykke frem således at den altid har pieces at hente.
